home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / graphics / 3dvect37.zip / DXFPATH.BAS < prev    next >
BASIC Source File  |  1994-06-22  |  2KB  |  105 lines

  1. DECLARE FUNCTION ac$ (gg!)
  2.  
  3. ' DXFTOPATH - version 1
  4. ' date 01/19/94
  5.  
  6. ' The only thing I would like to be changed in this is the way the output
  7. ' is formated when you get numbers in scientific notation.  eg 2.665e+08
  8.  
  9. nn = 5000
  10. DIM x(nn), y(nn), z(nn)
  11. nx = 1
  12.  
  13. CLS
  14.  
  15. INPUT " Input filename (test.dxf):", a$
  16. INPUT "Output filename (test.asc):", b$
  17.  
  18. PRINT
  19. PRINT " Input movement method:"
  20. PRINT
  21. PRINT " 1) Variable speed: move, wait_for lc       - good for camera"
  22. PRINT " 2) Constant speed: point_time, wait_for ac - good for spaceships"
  23. PRINT
  24. INPUT " Method:", m
  25.  
  26. PRINT
  27. IF m = 1 THEN INPUT " Time between points (150):", vt
  28. IF m = 2 THEN INPUT " Turn time (10):", tt
  29. IF m = 2 THEN INPUT " Speed of object (15000):", tf
  30. IF vt = 0 THEN vt = 150
  31. IF tt = 0 THEN tt = 10
  32. IF tf = 0 THEN tf = 15000
  33.  
  34. IF a$ = "" THEN a$ = "test.dxf"
  35. IF b$ = "" THEN b$ = "test.asc"
  36.  
  37. OPEN a$ FOR INPUT AS #1
  38. ON ERROR GOTO errorthing
  39. OPEN b$ FOR OUTPUT AS #2
  40.  
  41. testagain:
  42. INPUT #1, a$
  43. IF INSTR(a$, "POLYLINE") <> 0 THEN GOSUB morevertexs
  44. IF INSTR(a$, "EOF") <> 0 THEN GOTO outputit
  45. GOTO testagain
  46.  
  47. outputit:
  48. FOR z = 1 TO nx - 1
  49.  ON m GOSUB method1, method2
  50. NEXT z
  51.  
  52. errorthing:
  53. END
  54.  
  55. morevertexs:
  56. INPUT #1, a$
  57. IF EOF(1) = -1 THEN GOTO outa
  58. IF INSTR(a$, "EOF") <> 0 THEN GOTO outa
  59. IF INSTR(a$, "VERTEX") <> 0 THEN GOSUB getvertex: GOTO morevertexs
  60. IF INSTR(a$, "SEQEND") <> 0 THEN GOTO outa
  61. GOTO morevertexs
  62.  
  63. outa:
  64. RETURN
  65.  
  66. getvertex:
  67. INPUT #1, x$
  68. IF VAL(x$) = 10 THEN INPUT #1, x$: x(nx) = VAL(x$)
  69. IF VAL(x$) = 20 THEN INPUT #1, x$: y(nx) = VAL(x$)
  70. IF VAL(x$) = 30 THEN INPUT #1, x$: z(nx) = VAL(x$)
  71. IF VAL(x$) = 70 THEN nx = nx + 1: RETURN
  72. GOTO getvertex
  73.  
  74. method1:
  75.  IF z <> 1 THEN
  76.    PRINT #2, "  move "; ac$(x(z)); ","; ac$(y(z)); ","; ac$(z(z)); ","; ac$(vt)
  77.    PRINT #2, "  wait_for lc,0"
  78.  ELSE
  79.    PRINT #2, "  location "; ac$(x(z)); ","; ac$(y(z)); ","; ac$(z(z))
  80.  END IF
  81. RETURN
  82.  
  83. method2:
  84.  IF z <> 1 THEN
  85.    GOSUB findzx
  86.    PRINT #2, "  point_obj "; ac$(x(z)); ","; ac$(y(z)); ","; ac$(z(z)); ","; ac$(tt)
  87.    PRINT #2, "  wait_for frame_r,"; ac$(INT(zx / tf))
  88.  ELSE
  89.    PRINT #2, "  location "; ac$(x(z)); ","; ac$(y(z)); ","; ac$(z(z))
  90.    PRINT #2, "  align_d "; ac$(tf)
  91.  END IF
  92. RETURN
  93.  
  94. findzx:
  95.  zx = (x(z) - x(z - 1)) ^ 2
  96.  zx = (y(z) - y(z - 1)) ^ 2 + zx
  97.  zx = (z(z) - z(z - 1)) ^ 2 + zx
  98.  zx = SQR(zx)
  99. RETURN
  100.  
  101. FUNCTION ac$ (gg)
  102.  ac$ = LTRIM$(RTRIM$(STR$(gg)))
  103. END FUNCTION
  104.  
  105.